De acuerdo a la Cámara Nacional de la Industria Farmacéutica, (CANIFARMA) en México las personas en situación de pobreza se caracterizan por tener una probabilidad 5 veces mayor de fallecer por COVID-19 que las personas con relativamente mayor nivel de ingresos (Arceo-Gómez, et al., 2021). Además de la falta de acceso a servicios de salud y posibles cormobilidades, otro factor relevante en incrementar dicha probabililidad es el perfil socioeconómico (Arceo-Gómez, et al., 2021).
A partir de la pandemia por COVI19, la firma de consultoría XYZ (México) establece que “Las organizaciones que su principal actividad de negocios es brindar servicios de salud requiren soluciones específicas e innovadoras, para aprovechar oportunidades, afrontar retos, así como favorecer su consolidación y crecimiento”. Algunos de los servicios enfocados por parte de la firma es detectar las necesidades y potencial del crecimiento del sector salud a partir de Analítica de Datos.
1. ¿Qué es un ESDA y cuál es su principal propósito en el proceso de analítica de datos? Es un análisis espacial exploratorio, esta sería la traducción al español, y su propósito es entender mejor la distribución espacial de los datos, es decir como estos actuan diferente cuando tenemos en cuenta su atributo geografico.
2. ¿Qué es autocorrelación espacial? Busca entender a nivel geografico cuando un objeto o característica es similar a su vecino o a otro objeto cercano y en que magnitud. Por ejemplo si vemos una concentración de árboles en zonas vecinas y a su vez mientras más lejos del punto de referencia nos vayamos hay menos árboles existe una autocorrelación espacial positiva.
#Transformación de tipo de dato
covid$popden2020 = as.double(covid$popden2020)
covid$crimen_2019 = as.double(covid$crimen_2019)
covid$inclusion_fin_2019 = as.double(covid$inclusion_fin_2019)
covid$porcentaje_pob_pobreza = as.double(covid$porcentaje_pob_pobreza)
covid$porcentaje_pob_pobreza_ext = as.double(covid$porcentaje_pob_pobreza_ext)
covid$porcentaje_pob_acceso_ss = as.double(covid$porcentaje_pob_acceso_ss)
covid$porcentaje_pob_servicios_salud = as.double(covid$porcentaje_pob_servicios_salud)
#Creación de una nueva columna con el total de casos de Covid del 2020 por cada 10,000 habitantes
covid$total_casos <- rowSums(covid[,c("feb_2020", "march_2020", "april_2020", "may_2020", "june_2020", "july_2020", "august_2020", "sept_2020", "oct_2020", "nov_2020", "dic_2020")], na.rm=TRUE)
covid$tasa_covid = (covid$total_casos/covid$poblacion_2022)*10000
#Transformación a porcentaje de las variables correspondientes
covid$porcentaje_pob_acceso_ss = covid$porcentaje_pob_acceso_ss / 100
covid$porcentaje_pob_pobreza = covid$porcentaje_pob_pobreza / 100
covid$porcentaje_pob_pobreza_ext = covid$porcentaje_pob_pobreza_ext /100
covid$porcentaje_pob_servicios_salud = covid$porcentaje_pob_servicios_salud / 100
#Creación de modelo de regresión no espacial
model = lm(tasa_covid ~ popden2020 + crimen_2019 + inclusion_fin_2019 + porcentaje_pob_pobreza + porcentaje_pob_pobreza_ext + porcentaje_pob_acceso_ss + pob_6.14_no_edu + porcentaje_pob_servicios_salud, data = covid)
summary(model)
##
## Call:
## lm(formula = tasa_covid ~ popden2020 + crimen_2019 + inclusion_fin_2019 +
## porcentaje_pob_pobreza + porcentaje_pob_pobreza_ext + porcentaje_pob_acceso_ss +
## pob_6.14_no_edu + porcentaje_pob_servicios_salud, data = covid)
##
## Residuals:
## Min 1Q Median 3Q Max
## -281.48 -23.68 -6.27 11.97 433.69
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.617e+02 6.179e+00 26.164 < 2e-16 ***
## popden2020 8.602e-03 6.209e-04 13.854 < 2e-16 ***
## crimen_2019 -8.782e-03 3.174e-02 -0.277 0.78206
## inclusion_fin_2019 1.519e+01 1.356e+00 11.206 < 2e-16 ***
## porcentaje_pob_pobreza -9.996e+01 1.023e+01 -9.774 < 2e-16 ***
## porcentaje_pob_pobreza_ext 3.879e+01 1.227e+01 3.161 0.00159 **
## porcentaje_pob_acceso_ss -7.969e+01 1.007e+01 -7.912 3.81e-15 ***
## pob_6.14_no_edu -1.268e+00 3.093e-01 -4.101 4.25e-05 ***
## porcentaje_pob_servicios_salud -6.086e+00 8.128e+00 -0.749 0.45406
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 48.33 on 2446 degrees of freedom
## (2 observations deleted due to missingness)
## Multiple R-squared: 0.4125, Adjusted R-squared: 0.4105
## F-statistic: 214.6 on 8 and 2446 DF, p-value: < 2.2e-16
#Creación de nuevo dataset con variables significactivas
covid1 = covid[, c("tasa_covid", "cve_ent", "inclusion_fin_2019", "popden2020", "porcentaje_pob_pobreza_ext", "porcentaje_pob_acceso_ss", "pob_6.14_no_edu")]
Se hace la creación de un nuevo data set con las variables que presentaron significancia en el modelo de regresión lineal.
#Filtrado por nombre_act para conservar solo unidades de salud
hosp1 <- hosp %>%
filter(nombre_act != "Asilos y otras residencias del sector privado para el cuidado de ancianos",
nombre_act != "Agrupaciones de autoayuda para alcohólicos y personas con otras adicciones",
nombre_act != "Orfanatos y otras residencias de asistencia social del sector privado",
nombre_act != "Orfanatos y otras residencias de asistencia social del sector público",
nombre_act != "Refugios temporales comunitarios del sector privado",
nombre_act != "Consultorios del sector privado de audiología y de terapia ocupacional, física y del lenguaje",
nombre_act != "Servicios de orientación y trabajo social para la niñez y la juventud prestados por el sector público",
nombre_act != "Servicios de orientación y trabajo social para la niñez y la juventud prestados por el sector privado",
nombre_act != "Servicios de capacitación para el trabajo prestados por el sector privado para personas desempleadas, subempleadas o discapacitadas",
nombre_act != "Guarderías del sector privado",
nombre_act != "Guarderías del sector público",
nombre_act != "Centros del sector público dedicados a la atención y cuidado diurno de ancianos y discapacitados",
nombre_act != "Otros servicios de orientación y trabajo social prestados por el sector público",
nombre_act != "Refugios temporales comunitarios del sector público",
nombre_act != "Servicios de capacitación para el trabajo prestados por el sector público para personas desempleadas, subempleadas o discapacitadas",
nombre_act != "Residencias del sector privado para el cuidado de personas con problemas de trastorno mental y adicción",
nombre_act != "Centros del sector privado de atención médica externa para enfermos mentales y adictos",
nombre_act != "Consultorios del sector público de audiología y de terapia ocupacional, física y del lenguaje",
nombre_act != "Centros del sector público de atención médica externa para enfermos mentales y adictos",
nombre_act != "Centros de planificación familiar del sector privado",
nombre_act != "Asilos y otras residencias del sector público para el cuidado de ancianos",
nombre_act != "Centros del sector privado dedicados a la atención y cuidado diurno de ancianos y discapacitados",
nombre_act != "Residencias del sector público para el cuidado de personas con problemas de trastorno mental y adicción",
nombre_act != "Centros de planificación familiar del sector público",
nombre_act != "Consultorios de quiropráctica del sector público",
nombre_act != "Consultorios de optometría")
#Creación de clave única
hosp1$cve_ent1 = (hosp1$cve_ent * 1000) + hosp1$cve_mun
hosp1$cve_ent1 = as.character(hosp1$cve_ent1)
Aquí estamos creando una nueva variable en la base de hosp1, la cual nos dará la misma clave de entidad que la de la base de datos de covid, para esto estamos multiplicando la clave entidad por 1000 y sumamos la clave municipio, pues es la nomenclatura que tiene la base de datos de covid con la cual planeamos hacer una unión posteriormente.
#Conservamos solo las columnas necesarias
hosp1 = hosp1[,c("cve_ent1", "municipio", "entidad")]
#Filtro de agrupación para el conteo de hospitales por municipio
df = hosp1 %>%
group_by(cve_ent1, entidad) %>%
summarise(n = n()) %>%
arrange(desc(n))
## `summarise()` has grouped output by 'cve_ent1'. You can override using the
## `.groups` argument.
colnames(df)[colnames(df)=="n"] = "cant_hosp"
#Unión de la base de datos de Covid con la base de datos con información de hospitales por municipio
df2 <- merge(covid1, df, by.x = "cve_ent", by.y = "cve_ent1", all.x = TRUE)
#División de base de datos entre las diferentes regiones
Norte = df2[df2$entidad %in% c("Baja California", "Chihuahua", "Coahuila de Zaragoza", "Nuevo Le\xf3n", "Sonora", "Tamaulipas"), ]
CentroNorte1 = df2[df2$entidad %in% c("Aguascalientes", "Baja California Sur", "Colima", "Durango", "Jalisco"), ]
CentroNorte2 = df2[df2$entidad %in% c("Michoac\xe1n de Ocampo", "Nayarit", "San Luis Potos\xed", "Sinaloa", "Zacatecas"), ]
Centro = df2[df2$entidad %in% c("Ciudad de M\xe9xico", "M\xe9xico", "Guanajuato", "Hidalgo", "Morelos", "Puebla", "Quer?taro", "Tlaxcala"), ]
Sur = df2[df2$entidad %in% c("Campeche", "Chiapas", "Guerrero", "Oaxaca", "Quintana Roo", "Tabasco", "Veracruz de Ignacio de la Llave", "Yucat\xe1n"), ]
#Resumen estadístico de la base de datos final
summary(df2)
## cve_ent tasa_covid inclusion_fin_2019 popden2020
## Min. : 1001 Min. : 0.00 Min. : 0.0000 Min. : 0.16
## 1st Qu.:14084 1st Qu.: 10.78 1st Qu.: 0.0000 1st Qu.: 17.74
## Median :20231 Median : 29.88 Median : 0.0000 Median : 52.34
## Mean :19369 Mean : 49.13 Mean : 0.4876 Mean : 312.34
## 3rd Qu.:24030 3rd Qu.: 63.88 3rd Qu.: 0.8500 3rd Qu.: 142.69
## Max. :32058 Max. :546.74 Max. :10.6800 Max. :56489.74
## NA's :1
## porcentaje_pob_pobreza_ext porcentaje_pob_acceso_ss pob_6.14_no_edu
## Min. :0.0000 Min. :0.2203 Min. : 0.000
## 1st Qu.:0.0535 1st Qu.:0.6433 1st Qu.: 4.170
## Median :0.1248 Median :0.7646 Median : 5.720
## Mean :0.1720 Mean :0.7238 Mean : 6.304
## 3rd Qu.:0.2415 3rd Qu.:0.8347 3rd Qu.: 7.810
## Max. :0.8445 Max. :0.9699 Max. :38.560
## NA's :1 NA's :1
## entidad cant_hosp
## Length:2457 Min. : 1.0
## Class :character 1st Qu.: 4.0
## Mode :character Median : 13.0
## Mean : 94.6
## 3rd Qu.: 45.0
## Max. :5214.0
## NA's :6
summary(CentroNorte1)
## cve_ent tasa_covid inclusion_fin_2019 popden2020
## Min. : 1001 Min. : 0.00 Min. :0.0000 Min. : 0.765
## 1st Qu.:10022 1st Qu.: 19.74 1st Qu.:0.0000 1st Qu.: 8.542
## Median :14030 Median : 33.96 Median :0.7100 Median : 33.630
## Mean :11762 Mean : 50.74 Mean :0.8269 Mean : 182.976
## 3rd Qu.:14078 3rd Qu.: 63.70 3rd Qu.:1.4375 3rd Qu.: 80.778
## Max. :14125 Max. :402.64 Max. :3.5700 Max. :7373.897
## porcentaje_pob_pobreza_ext porcentaje_pob_acceso_ss pob_6.14_no_edu
## Min. :0.00860 Min. :0.3375 Min. : 1.570
## 1st Qu.:0.02595 1st Qu.:0.5897 1st Qu.: 5.162
## Median :0.03940 Median :0.6968 Median : 6.450
## Mean :0.05563 Mean :0.6708 Mean : 6.888
## 3rd Qu.:0.05945 3rd Qu.:0.7915 3rd Qu.: 8.227
## Max. :0.65490 Max. :0.9219 Max. :17.460
## entidad cant_hosp
## Length:190 Min. : 2.00
## Class :character 1st Qu.: 9.25
## Mode :character Median : 29.00
## Mean : 134.55
## 3rd Qu.: 71.75
## Max. :5214.00
En esta sección se puede observar los diferentes estadísticos de la base de datos final, cabe resaltar lo interesante que es la distribución de datos de la cantidad de hospitales, donde hay un mínimo de 1 hospital con una mediana de 13, pero hasta un máximo de 5,214 hopsitales. Siendo esta y la variable de densidad poblacional las uqe tienen mayor dispersión, lo cual tiene sentido teniendo en cuenta que mide tanto zonas rurales como áreas metropolitanas. Una vez hacemos el análisis para la primera mitad de de la región Centro Norte podemos ver que la cantidad máxima de hospitales es menor, pero el promedio es mayor, por lo que podemos esperar una distribución más regular de hospitales en esta región.
##Histograma global
plot_normality(df2, tasa_covid, inclusion_fin_2019, popden2020, porcentaje_pob_pobreza_ext, porcentaje_pob_acceso_ss, pob_6.14_no_edu, cant_hosp)
En estos gráficos se peude observar lo mencionado anteriormente. Es interesante ver como las graficas de cantidad de hospitales y tasas de covid originales, aunque ya están medidas en relación a la población, presentan un sesgo, no es hasta que se hace una transformación log que adquieren más normalidad.
#Histograma por region
plot_normality(CentroNorte1, tasa_covid, inclusion_fin_2019, popden2020, porcentaje_pob_pobreza_ext, porcentaje_pob_acceso_ss, pob_6.14_no_edu, cant_hosp)
Aunque la frecuencia es menor, se sigue presentando una distribución sesgada en la cantidad de hospitales y tasa de covid.
# boxplot global
boxplot(df2$tasa_covid)
boxplot(df2$cant_hosp)
boxplot(df2$porcentaje_pob_acceso_ss)
Representado en un boxplot se puede observar de una forma muy clara por la cantidad de outliers que los datos están muy dispersos para la tasa de covid y cantidad de hospitales.
# boxplot local
boxplot(CentroNorte1$tasa_covid)
boxplot(CentroNorte1$cant_hosp)
boxplot(CentroNorte1$porcentaje_pob_acceso_ss)
Una vez filtrando por región se dismunye considerablemente la cantidad de outliers, lo que puede indicar en primera instancia que el comportamiento por región es similar entre municipios.
#Carga de data set para creación de mapas - sf
mapasf = read_sf("~/Downloads/spda_covid19/shp_mx_mpios/mx_mpios.shp")
#Unión de datas geo com la base de datos principal
mapasf = geo_join(mapasf, df2, 'IDUNICO','cve_ent', how = 'inner')
#Carga de data set para creación de mapas - polygon shpefile
maparsp <-readShapePoly("~/Downloads/spda_covid19/shp_mx_mpios/mx_mpios.shp",IDvar="IDUNICO",proj4string=CRS("+proj=longlat"))
#Unión de datas geo com la base de datos principal
maparsp = geo_join(maparsp, df2, 'IDUNICO','cve_ent', how = 'inner')
maparsp
## class : SpatialPolygonsDataFrame
## features : 2456
## extent : -118.4076, -86.71041, 14.5321, 32.71865 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## variables : 12
## names : CODELAG, CVE_ENT, IDUNICO, cve_ent, tasa_covid, inclusion_fin_2019, popden2020, porcentaje_pob_pobreza_ext, porcentaje_pob_acceso_ss, pob_6.14_no_edu, entidad, cant_hosp
## min values : 1, 1, 1001, 1001, 0, 0, 0.156, 0, 0.2203, 0, Aguascalientes, 1
## max values : 2456, 32, 32058, 32058, 546.742148653594, 10.68, 56489.74, 0.8445, 0.9699, 38.56, Zacatecas, 5214
prueba = ggplot(data=mapasf) + geom_sf(aes(fill=tasa_covid)) + scale_fill_continuous(low = "#fff7ec", high="#7f0000")
prueba
#Cálculo de centroides
centroid = coordinates(maparsp)
names(centroid) = c("lon","lat")
map.centroid = coordinates(maparsp)
summary(map.centroid)
## V1 V2
## Min. :-116.89 Min. :14.64
## 1st Qu.:-100.75 1st Qu.:17.62
## Median : -98.24 Median :19.33
## Mean : -98.76 Mean :20.03
## 3rd Qu.: -96.78 3rd Qu.:20.95
## Max. : -86.90 Max. :32.44
map.link = poly2nb(maparsp, queen=T)
map.linkW = nb2listw(map.link, style = "W")
plot(maparsp, border = "black", axes = FALSE, las=1)
plot(map.linkW,coords=map.centroid,pch=19,cex=0.1,col="red",add=T) ### plot SWM queen standarized
title("Spatial Connectivity Matrix - Contiguity Case (Queen)")
#Identificación de Autocorrelacion GLOBAL
moran.mc(maparsp$tasa_covid,map.linkW,nsim=9999)# Positive Spatial Autocorrelation and Statistically Significant.
##
## Monte-Carlo simulation of Moran I
##
## data: maparsp$tasa_covid
## weights: map.linkW
## number of simulations + 1: 10000
##
## statistic = 0.54528, observed rank = 10000, p-value = 1e-04
## alternative hypothesis: greater
Podemos observar que existe una autocorrelación espacial positiva estadísticamente significativa.
mapast = st_read("~/Downloads/spda_covid19/shp_mx_mpios/mx_mpios.shp")
## Reading layer `mx_mpios' from data source
## `/Users/charivelferminsuero/Downloads/spda_covid19/shp_mx_mpios/mx_mpios.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 2456 features and 3 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -118.4076 ymin: 14.5321 xmax: -86.71041 ymax: 32.71865
## Geodetic CRS: WGS 84
mapast = geo_join(mapast, df2, 'IDUNICO','cve_ent', how = 'inner')
## Warning: We recommend using the dplyr::*_join() family of functions instead.
queen_w = queen_weights(mapast)
#Identificación de Autocorrelacion LOCAL
lisa_tasacovid<-local_moran(queen_w, mapast["tasa_covid"])
moran.mc(mapast$tasa_covid,map.linkW,nsim=9999) # Positive Spatial Autocorrelation and Statistically Significant.
##
## Monte-Carlo simulation of Moran I
##
## data: mapast$tasa_covid
## weights: map.linkW
## number of simulations + 1: 10000
##
## statistic = 0.25688, observed rank = 10000, p-value = 1e-04
## alternative hypothesis: greater
mapast$cluster = as.factor(lisa_tasacovid$GetClusterIndicators())
levels(mapast$cluster) = lisa_tasacovid$GetLabels()
ggplot(data=mapast) +
geom_sf(aes(fill=cluster)) +
ggtitle(label="Tasa de Covid")
En el mapa podemos ver como para la tasa de covid la mayoría de los
municipios no tiene significacia en los cluster. Aquellos casos que
presentan relación alta y positiva es en el norte del país.
1. ¿Cuáles son las regiones en México que representan una oportunidad de crecimiento y/o expansión de organizaciones relacionadas con el acceso a servicios de salud?
summary(CentroNorte1$cant_hosp)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.00 9.25 29.00 134.55 71.75 5214.00
summary(CentroNorte2$cant_hosp)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 15.00 27.00 114.39 65.75 3345.00
summary(Centro$cant_hosp)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.0 10.0 24.0 144.6 84.0 4617.0
summary(Norte$cant_hosp)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.0 3.0 10.0 149.9 54.0 4256.0
summary(Sur$cant_hosp)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 3.00 7.00 40.78 23.00 3202.00
El Sur es la región con menos cantidad de hospitales.
2. ¿Cuáles son las características socioeconómicas de la población de dichas regiones?
summary(df2)
## cve_ent tasa_covid inclusion_fin_2019 popden2020
## Min. : 1001 Min. : 0.00 Min. : 0.0000 Min. : 0.16
## 1st Qu.:14084 1st Qu.: 10.78 1st Qu.: 0.0000 1st Qu.: 17.74
## Median :20231 Median : 29.88 Median : 0.0000 Median : 52.34
## Mean :19369 Mean : 49.13 Mean : 0.4876 Mean : 312.34
## 3rd Qu.:24030 3rd Qu.: 63.88 3rd Qu.: 0.8500 3rd Qu.: 142.69
## Max. :32058 Max. :546.74 Max. :10.6800 Max. :56489.74
## NA's :1
## porcentaje_pob_pobreza_ext porcentaje_pob_acceso_ss pob_6.14_no_edu
## Min. :0.0000 Min. :0.2203 Min. : 0.000
## 1st Qu.:0.0535 1st Qu.:0.6433 1st Qu.: 4.170
## Median :0.1248 Median :0.7646 Median : 5.720
## Mean :0.1720 Mean :0.7238 Mean : 6.304
## 3rd Qu.:0.2415 3rd Qu.:0.8347 3rd Qu.: 7.810
## Max. :0.8445 Max. :0.9699 Max. :38.560
## NA's :1 NA's :1
## entidad cant_hosp
## Length:2457 Min. : 1.0
## Class :character 1st Qu.: 4.0
## Mode :character Median : 13.0
## Mean : 94.6
## 3rd Qu.: 45.0
## Max. :5214.0
## NA's :6
summary(Sur)
## cve_ent tasa_covid inclusion_fin_2019 popden2020
## Min. : 4001 Min. : 0.000 Min. :0.0000 Min. : 1.671
## 1st Qu.:20071 1st Qu.: 3.984 1st Qu.:0.0000 1st Qu.: 20.496
## Median :20353 Median : 14.702 Median :0.0000 Median : 44.856
## Mean :21139 Mean : 32.298 Mean :0.2996 Mean : 124.499
## 3rd Qu.:30038 3rd Qu.: 38.815 3rd Qu.:0.2300 3rd Qu.: 103.176
## Max. :31106 Max. :487.452 Max. :6.3000 Max. :6583.268
## NA's :1
## porcentaje_pob_pobreza_ext porcentaje_pob_acceso_ss pob_6.14_no_edu
## Min. :0.0102 Min. :0.2203 Min. : 0.000
## 1st Qu.:0.1405 1st Qu.:0.6958 1st Qu.: 3.740
## Median :0.2253 Median :0.7911 Median : 5.610
## Mean :0.2624 Mean :0.7591 Mean : 6.252
## 3rd Qu.:0.3549 3rd Qu.:0.8536 3rd Qu.: 8.130
## Max. :0.8445 Max. :0.9699 Max. :27.350
##
## entidad cant_hosp
## Length:1121 Min. : 1.00
## Class :character 1st Qu.: 3.00
## Mode :character Median : 7.00
## Mean : 40.78
## 3rd Qu.: 23.00
## Max. :3202.00
##
Al hacer una comparación con los datos globales en promedio el sur tiene menor inclusión financiera, un mayor porcentje de pobreza extrema, pero presentan un mayor porcentaje de con acceso a servicios de seguridad social y menor población sin educación de los 6-14. Entonces aunque existan menos hospitales no es alarmante al tener en cuenta que es menos territorio y menos población que en otras regiones.
3.¿Porqué sí / no existen condiciones en dichas regiones para el crecimiento y/o expansión de organizaciones relacionadas con el acceso a servicios de salud? Podemos observar que en el Sur existe un buen porcentaje con acceso a servicios de seguridad social
Arceo-Gómez, Eva O.; Campos-Vazquez, Raymundo M.; Esquivel, Gerardo; Alcaraz, Eduardo; Martinez, Luis A.; y Lopez, Norma G. (2022). The Income Gradient in COVID-19 Mortality and Hospitalisation: An Observational Study with Social Security Administrative Records in Mexico. The Lancet Regional Health – Americas, 6. Fuente: https://www.sciencedirect.com/science/article/pii/S2667193X21001113?via%3Dihub